/*
 * 描          述:  <描述>
 * 修  改   人:  PengQingyang
 * 修改时间:  2022年6月22日
 * <修改描述:>
 */
package com.tx.component.file.configurator;

import org.apache.commons.vfs2.FileSystemManager;

import com.tx.component.file.resource.FCResourceLoader;
import com.tx.component.file.resource.impl.VFSFCResourceLoader;
import com.tx.core.exceptions.util.AssertUtils;

/**
 * 本地文件目录工厂
 * <功能详细描述>
 * 
 * @author  PengQingyang
 * @version  [版本号, 2022年6月22日]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
public class VFSFCResourceLoaderBuilder extends FCResourceLoaderBuilder {
    
    /**
     * 创建VFSFCResource的工厂类<br/>
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return VFSFCResourceFactory [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    public static VFSFCResourceLoaderBuilder newInstance() {
        VFSFCResourceLoaderBuilder factory = new VFSFCResourceLoaderBuilder();
        return factory;
    }
    
    /** 目录名 */
    private String catalog = null;
    
    /** 路径 */
    private String path = null;
    
    /** 文件系统Manager */
    private FileSystemManager fileSystemManager;
    
    /** <默认构造函数> */
    VFSFCResourceLoaderBuilder() {
        super();
    }
    
    /**
     * @return
     */
    @Override
    public FCResourceLoader build() {
        AssertUtils.notEmpty(this.catalog, "catalog is empty.");
        AssertUtils.notEmpty(this.path, "path is empty.");
        AssertUtils.notNull(this.fileSystemManager,
                "fileSystemManager is null.");
        
        VFSFCResourceLoader loader = new VFSFCResourceLoader(catalog,
                fileSystemManager, path);
        return loader;
    }
    
    /**
     * setPath
     */
    public VFSFCResourceLoaderBuilder path(String path) {
        this.path = path;
        return this;
    }
    
    /**
     * setPath
     */
    public VFSFCResourceLoaderBuilder fileSystemManager(
            FileSystemManager fileSystemManager) {
        this.fileSystemManager = fileSystemManager;
        return this;
    }
    
}
